package br.ifpi.pc.sbcf.entity;

import static org.junit.Assert.*;

import org.junit.Test;

public class CalculadoraDeSalarioTest {

	// Primeiro Cenario
	@Test
	public void deveCalcularSalarioDesenvolvedorAbaixoLimite() {

		CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
		Funcionario desenvolverdor = new Funcionario("Mauricio", "", 1500.00,
				Cargo.DESENVOLVEDOR);

		double salario = calculadora.calculaSalario(desenvolverdor);

		assertEquals(1500 * 0.9, salario, 0.00001);
	}

	// Segundo Cenario
	@Test
	public void deveCalcularSalarioDesenvolvedorAcimaLimite() {

		CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
		Funcionario desenvolverdor = new Funcionario("Mauricio", "", 4000.00,
				Cargo.DESENVOLVEDOR);

		double salario = calculadora.calculaSalario(desenvolverdor);

		assertEquals(4000 * 0.8, salario, 0.00001);
	}

	// Terceiro Cenario
	@Test
	public void deveCalcularSalarioDBAAbaixoLimite() {

		CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
		Funcionario dba = new Funcionario("Ricardo", "", 1500.00, Cargo.DBA);

		double salario = calculadora.calculaSalario(dba);

		assertEquals(1500.00 * 0.85, salario, 0.00001);
	}
	
	//Quarto Cenario
	@Test
	public void deveCalcularSalarioDBAAcimaLimite(){
		
		CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
		Funcionario dba = new Funcionario("Ricardo", "", 4500.00, Cargo.DBA);
		
		double salario = calculadora.calculaSalario(dba);
		
		assertEquals(4500.00 * 0.75, salario, 0.00001);
	}
	
	//Quinto Cenario
	@Test
	public void deveCalcularSalarioTestadorAbaixoLimite(){
		
		CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
		Funcionario testador = new Funcionario("Paulo", "", 1500.00, Cargo.TESTADOR);
			
		double salario = calculadora.calculaSalario(testador);
		
		assertEquals(1500.00 * 0.85, salario, 0.00001);
	}
	
	//Sexto Cenario
	@Test
	public void deveCalcularSalarioTestadorAcimaLimite(){
		
		CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
		Funcionario testador = new Funcionario("Paulo", "", 4500.00, Cargo.TESTADOR);
			
		double salario = calculadora.calculaSalario(testador);
		
		assertEquals(4500.00 * 0.75, salario, 0.00001);
	}
	
	//Setimo Cenario
	@Test
	public void deveCalcularSalarioGerenteAbaixoLimite(){
		
		CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
		Funcionario gerente = new Funcionario("Silvestre", "", 3000.00, Cargo.GERENTE);
		
		double salario = calculadora.calculaSalario(gerente);
		
		assertEquals(3000.00 * 0.7, salario, 0.00001);
	}
	
	//Oitavo Cenario
		@Test
		public void deveCalcularSalarioGerenteAcimaLimite(){
			
			CalculadoraDeSalario calculadora = new CalculadoraDeSalario();
			Funcionario gerente = new Funcionario("Silvestre", "", 6000.00, Cargo.GERENTE);
			
			double salario = calculadora.calculaSalario(gerente);
			
			assertEquals(6000.00 * 0.8, salario, 0.00001);
		}
}
